1. Field of the Invention
Devices and methods consistent with the present invention relate to transmission control in a transmission control protocol (TCP). More particularly, the present invention relates to a method for preventing unnecessary retransmission caused due to delayed transmission in a wireless network environment, and a communication device using the same.
2. Description of the Related Art
The transmission control protocol (TCP) is used together with the Internet protocol (IP) for data transmission between communication devices. A main function of TCP is to stabilize the transmission of data through a network. For this, TCP uses a congestion control mechanism. The TCP congestion control mechanism controls the data packet transmission by observing network congestion while the data packets are being transmitted, and retransmits any data packet(s) lost due to network congestion. The TCP congestion control mechanism according to the conventional art will be described with reference to FIGS. 1 and 2.
FIG. 1 illustrates changes in the transmission rate according to the conventional slow-start/congestion avoidance algorithm.
The TCP of a communication device that transmits data packets (hereinafter referred to as a “transmitting device”) adjusts the size of a congestion window (hereinafter abbreviated as “CWND”), and transmits one or more data packets simultaneously according to the size of CWND. As the CWND size increases, the number of data packets available for simultaneous transmission increases. The initial CWND size (CWND 1) is one TCP segment.
A communication device that receives a data packet (hereinafter referred to as a “receiving device”) transmits an acknowledgement packet (ACK packet) to the transmitting device. The TCP of the transmitting device increases the CWND size by one TCP segment whenever it receives an acknowledgement packet transmitted by the receiving device. Accordingly, the CWND size increases exponentially, which is called a slow-start algorithm. Changes in the CWND size according to the slow-start algorithm are depicted in the slow-start period 110.
When the CWND size approaches the slow-start threshold (hereinafter abbreviated as “SSTHRESH”), that is, SSTHRESH 1 while the slow-start algorithm is in progress, the TCP of the transmitting device uses a congestion avoidance algorithm that linearly increases the CWND size considering the network congestion. In the congestion avoidance algorithm, the TCP increases the CWND size by 1/CWND whenever it receives an acknowledgement packet. Changes in the CWND size according to the congestion avoidance algorithm are depicted in the congestion avoidance period 120.
When no acknowledgement packet corresponding to the transmitted data packet is received, the TCP of the transmitting device waits until the acknowledgement packet is received, without increasing the CWND size. However, if no acknowledgement packet is received after a predetermined time period, the TCP generates a retransmission timeout 130. The time period from when the TCP transmits a data packet to when it generates a retransmission timeout is about two times the round trip time (RTT) of a packet.
Once the retransmission timeout is generated, the TCP decides that the transmitted data packet has been lost due to network congestion. Then, the TCP sets the CWND size to one TCP segment so that the amount of data to be transmitted is reduced. In addition, the TCP sets the slow-start threshold (SSTHRESH 2) to half the CWND size (CWND 2) immediately before the retransmission timeout is generated. According to the slow-start algorithm, the TCP resumes transmitting the lost data packets (the data packets whose acknowledgement packets have not been received).
FIG. 2 illustrates changes in transmission rate according to a congestion control algorithm which employs the conventional fast retransmission and fast recovery algorithm.
In the slow-start/congestion avoidance algorithm, loss of data packets in the course of transmission is decided based only on whether the retransmission timeout is generated. However in the fast retransmission algorithm, if a predetermined number of duplicate acknowledgement packets (duplicate ACKs) has been received even before the retransmission timeout is generated, it is decided that the data packets are lost.
A duplicate acknowledgement packet is generated by the TCP of the receiving device when data packets transmitted by the transmitting device and those received by the receiving device are different in sequence. The sequence of data packets can be ascertained through the sequence numbers set in the headers of the data packets.
When an acknowledgement packet to a specific data packet has not been received while the transmitting device is using to the slow-start/congestion avoidance algorithm, the TCP waits for the acknowledgement packet until a retransmission timeout is generated. When a predetermined number of duplicate response packets have been received before the retransmission timeout is generated, the TCP considers the data packets lost though no retransmission timeout has been generated. At this time, the TCP uses the fast retransmission algorithm to retransmit the data packets considered as having been lost. Changes in the transmission rate due to the fast retransmission algorithm are depicted in the fast retransmission period 220.
Usually the fast retransmission algorithm is applied when three duplicate acknowledgement packets have been received. When only one or two duplicate acknowledgement packets are received, it may be decided that the data packets have not arrived sequentially as transmitted by the transmitting device since they respectively suffered from delayed transmissions in the network while they were transmitted to the receiving device, rather than considering the data packets lost.
When the transmitting device uses the fast retransmission algorithm, the CWND size is set to a value
  (                    CWND        ⁢                                  ⁢        3            2        +    3    )that is half the CWND size (CWND 3) immediately before the duplicate acknowledgement packets are received plus three TCP segments.
In the fast recovery algorithm, when an acknowledgement packet to the retransmitted data packet according to the fast retransmission algorithm is received, the TCP allows the transmitting device to immediately use the congestion avoidance algorithm without having to use the low-start algorithm. For this, a SSTHRESH value and a CWND size are set to half the CWND size (CWND 3) immediately before the fast retransmission algorithm is applied. Changes in transmission rates according to the fast recovery algorithm are depicted in the fast recovery period 230.
When a retransmission timeout is generated under the condition that an acknowledgement packet to a specific data packet has not been received, the TCP employs the slow-start/congestion avoidance algorithm. When a predetermined number of duplicate acknowledgement packets have been received before a retransmission timeout is generated, and under the condition that an acknowledgement packet to a specific data packet has not been received, the TCP employs the fast retransmission and fast recovery algorithm.
In the wireless network, transmission of data packets may abruptly and temporarily be delayed due to a change in the wireless environment, which is called “delay spike.” A delay spike may be caused through mobility of a communication device, retransmission of a link layer to compensate for loss generated due to fading of a communication device, and periodical searches of a channel to search for a mobile terminate call.
Once a delay spike is generated, the transmitting device may not receive an acknowledgement packet to a transmitted data packet until a retransmission timeout is generated. In this case, the transmitting device decides that the data packets that it transmitted have been lost, and retransmits the data packets. However, when a data packet is successfully received by the receiving device despite delayed transmission due to the delay spike, retransmission of the data packet by the transmitting device will result in wasting resources of a wireless link. This problem according to the conventional art will be specifically described with reference to FIG. 3.
FIG. 3 illustrates packet transmission between communication devices according to the conventional art. In this figure, “N” to “N+9” refers to the sequence numbers of data packets.
Referring to this figure, the receiving device that has received a data packet “N” transmits a response packet thereto, and the transmitting device consecutively transmits data packets “N+1” to “N+7.” However, as illustrated, data packets “N+1” to “N+7” transmitted from the transmitting device suffer from delayed transmissions 310. Delayed data packets may be stored in a queue of a relay device that relays packets between the transmitting device and the receiving device.
Because of this delayed transmission, a retransmission timeout 320 is generated in the transmitting device before it receives acknowledgement packets in response to the transmitted data packets “N+1” to “N+7.”
Because the retransmission timeout 320 has been generated, the transmitting device decides that the data packets “N+1” to “N+7” are lost and attempts retransmission thereof. At this time, because the retransmission timeout has been generated the TCP of the transmitting device sets the CWND size to 1 TCP segment, and thus, only the first data packet “N+1” is preferentially retransmitted.
When the transmission delay is released 330 within a predetermined time due to a change in the wireless environment, the data packets “N+1” to “N+7” are successfully transmitted to the receiving device and the receiving device transmits an acknowledgement packet to each data packet 340. Accordingly, the retransmission timeout 320 generated in the transmitting device becomes a spurious timeout due to the delay spike.
As the acknowledgement packets from the receiving device are received, the transmitting device adjusts the CWND size and transmits data packets following the data packet “N+1.” When all of the data packets “N+1” to “N+7” are retransmitted, new data packets “N+8,” “N+9” and so on are transmitted.
However, retransmission by the transmitting device of the transmitted data packets “N+1” to “N+7” will result in wasting resources of the wireless link since the data packets were merely delayed but were successfully transmitted to the receiving device. In other words, retransmission of the data packets “N+1” to “N+7” is the unnecessary retransmission.
At this time, the retransmitted data packets “N+1” to “N+7” are on standby in a queue of a relay device that relays packets between the transmitting device and the receiving device while data packets “N+1” to “N+7” is being transmitted, which were previously transmitted. For this reason, the retransmitted data packets may be a little delayed in transmission as depicted in FIG. 3.
The receiving device that received the retransmitted data packets “N+1” to “N+7” again receives the same data packets, and it generates duplicate acknowledgement packets 350. When more than a predetermined number of duplicate response packets are transmitted to the transmitting device, the transmitting device operates according to the fast retransmission algorithm as described with reference to FIG. 2, and the CWND size decreases accordingly. However, at this time the fast retransmission algorithm is operated because of the unnecessary retransmission, and thus, reduction of the CWND size results in unnecessarily reducing the data transmission rate, thereby greatly wasting the wireless link resources.
In this case, the transmitting device retransmits the already transmitted data packets in response to the duplicate response packets. This retransmission is referred to as a “spurious retransmission,” and this spurious retransmission wastes the wireless link resources. In the illustrated example, the already transmitted packet, N+8, is retransmitted because of the duplicate acknowledgement packet to the data packet, N+7 360.
According to the conventional art, even though a data packet is successfully transmitted after the transmission thereof is delayed, the transmitting device decides that the data packet was lost, and thus, retransmits the concerned data packet. This retransmission causes the problem that wireless link resources are wasted. In addition, the retransmitted data packets cause the receiving device to generate duplicate response packets, thereby resulting in extra reduction of the transmission rate by the transmitting device (unnecessary fast retransmission). In addition, the wireless link resources are further wasted because of the spurious retransmission generated due to the duplicate response packets.